1. Field of the Invention
The present invention relates generally to an improved data processing system and, in particular, to a method, apparatus, and computer program product for identifying independent logical computing entities within a physical computer, such as logical partitions and virtual machines. Still more particularly, the present invention relates to a computer-implemented method, apparatus, and computer program product for automatically generating identifiers of these logical computing entities that are unique worldwide or, more particularly, within the fabric of a network.
2. Description of the Related Art
In a data processing system having multiple computing entities with varying levels of access to external resources in a fabric, and varying accountability for those external resources, a unique computing entity uses a unique identifier for each input/output (I/O) port into the fabric in order to distinguish one unique entity from another when sharing a port. For example, each computing entity that shares an I/O device with another computing entity through an I/O-adapter port needs to be uniquely identifiable by that I/O device.
Physical I/O-port hardware usually contains a serial number or other unique identifier that can be used to uniquely identify a computing entity using the port. However, in logically partitioned or virtualized data processing systems, a single physical computing entity can be divided into a plurality of logical partitions or virtual machines, some or all of which may share a port so as to better utilize an I/O adapter.
A logical partition is a portion of a computing entity with dedicated memory that is capable of operating independently of other portions of the same computing entity in a data processing system. Each logical partition generally uses a subset of physical system resources and runs a separate instance of an operating system.
A virtual machine likewise comprises a subset of physical system (or logical partition) resources, and is typically the creation of a hypervisor operating system that controls and manages a set of virtual machines. Each virtual machine is capable of operating independently of other virtual machines controlled by the hypervisor and uses a subset of physical system (or logical partition) resources as allowed by the hypervisor. Each virtual machine runs a separate instance of an operating system in virtual memory managed via paging by the hypervisor.
Just as there is a need to uniquely identify each physical computing entity utilizing an I/O port in data processing systems that are not partitioned or virtualized, there is also a need to uniquely identify each logical computing entity sharing such an I/O port, such as logical partitions and virtual machines. Because each logical computing entity requires a unique identifier associated with each port, and multiple logical entities can be associated with physical hardware, utilization of an identifier associated with the underlying physical hardware is generally inadequate.
In data processing systems comprising a small number of logical entities, the creation of unique identifiers for each computing entity can be performed manually. However, larger data processing systems may contain hundreds, thousands, or even millions of logical computing entities. Manually generating a sufficient number of unique identifiers for each one of these entities in such a system is cumbersome and impractical.